package com.itheima.d1_arrays;

import java.util.Arrays;
import java.util.Comparator;

public class ArraysTest2 {
    public static void main(String[] args) {
        // 目标：掌握如何对数组中的对象进行排序。
        Student[] students = new Student[4];
        students[0] = new Student("蜘蛛精", 169.5, 23);
        students[1] = new Student("紫霞", 162.8, 26);
        students[2] = new Student("紫霞", 163.8, 26);
        students[3] = new Student("至尊宝", 167.5, 24);
        //如果要对数组中的对象进行排序，需要对象的类实现compareble接口，重写方法，自己指定排序规则
//        Arrays.sort(students);
//        System.out.println(Arrays.toString(students));


        // 1、public static void sort(类型[] arr)：对数组进行排序。
        //第二种对象排序方式
//        Arrays.sort(students, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                //o1-->this，o2---->已存在的对象
//
////                return o1.getAge()-o2.getAge();//升序
//                //按照年龄升序，当年龄相同时，按照身高降序排列
////                return  Double.compare(o1.getHeight(),o2.getHeight());
////                int result=o1.getAge()-o2.getAge();
////                if(result!=0){
////                    return result;
////                }else {
////                    //因为方法返回值是Int，所以这里要使用强转，但是强转会导致数据丢失，所以使用double的包装类compare，相当于o2-o1
////                    return Double.compare(o2.getHeight(), o1.getHeight());
////                }
//                //简化代码，三元表达式
//                return o1.getAge()-o2.getAge()!=0 ? o1.getAge()- o2.getAge():Double.compare(o2.getHeight(), o1.getHeight());
//            }
//
//        });
        Arrays.sort(students,(Student o1,Student o2)->{
             return o1.getAge()-o2.getAge()!=0 ? o1.getAge()- o2.getAge():Double.compare(o2.getHeight(), o1.getHeight());
        });
//        lambda省略写法
//         Arrays.sort(students,( o1, o2)->
//              o1.getAge()-o2.getAge()!=0 ? o1.getAge()- o2.getAge():Double.compare(o2.getHeight(), o1.getHeight())
//        );

        System.out.println(Arrays.toString(students));
        // 2、public static <T> void sort(T[] arr, Comparator<? super T> c)
    }
}
